Exponentiation operator precedence

Waldemar Horwat waldemar at google.com
Mon Aug 24 22:45:47 UTC 2015


On 08/24/2015 10:08, Jason Orendorff wrote:
> In math, -x² is -(x²), not (-x)². But as proposed for JS, -x**2 is (-x)**2.
>
> PHP, Python, Haskell, and D side with the traditional algebraic
> notation, against JS. Here's PHP:
>
>      $ php -r 'print(-2 ** 2);'
>      -4
>
> Python:
>
>      >>> -2 ** 2
>      -4
>
> Haskell:
>
>      Prelude> -2 ^ 2
>      -4
>
> The D grammar: http://dlang.org/grammar.html#UnaryExpression
>
> Let's switch.

Let's not.  As I said at the last meeting, making ** bind tighter than unary operators would break x**-2.  And making it sometimes tighter and sometimes looser would be too confusing and lead to other opportunities for precedence inversion.

     Waldemar



More information about the es-discuss mailing list