The Python docs say that *
and /
have the same precedence.
I know that expressions in python are evaluated from left to right.
Can i rely on that and assume that j*j/m
is always equal to (j*j)/m
avoiding the parentheses?
If this is the case can i assume that this holds for operators with the same precedence in general?
ps: The question as it is fine for my purposes, i came to it while reading integer-only code (like the above example) without parentheses, which at the time looked a lot suspicious to me.
Yes - different operators with the same precedence are left-associative; that is, the two leftmost items will be operated on, then the result and the 3rd item, and so on.
An exception is the **
operator:
>>> 2 ** 2 ** 3
256
Also, comparison operators (==
, >
, et cetera) don't behave in an associative manner, but instead translate x [cmp] y [cmp] z
into (x [cmp] y) and (y [cmp] z)
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With