Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python operator precedence

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.

like image 830
Lord British Avatar asked Jul 25 '10 06:07

Lord British


1 Answers

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).

like image 106
Amber Avatar answered Oct 21 '22 19:10

Amber