In Python the not operator has low precedence. In JS the ! operator has high precedence.
To be on the safe side, generators should wrap all operators in parens by default, and only remove them if the generator can prove there is no precedence/associativity issue. Otherwise you'll get issues with things like PHP's weird-ass left associative ternary operator.
Input (Python):
not 0.1 > 0.1
Expected output (JavaScript):
!(0.1 > 0.1)
Actual output (JavaScript):
!0.1 > 0.1
In Python the
notoperator has low precedence. In JS the!operator has high precedence.To be on the safe side, generators should wrap all operators in parens by default, and only remove them if the generator can prove there is no precedence/associativity issue. Otherwise you'll get issues with things like PHP's weird-ass left associative ternary operator.
Input (Python):
not 0.1 > 0.1Expected output (JavaScript):
!(0.1 > 0.1)Actual output (JavaScript):
!0.1 > 0.1