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:Also, comparison operators (
==,>, et cetera) don’t behave in an associative manner, but instead translatex [cmp] y [cmp] zinto(x [cmp] y) and (y [cmp] z).