On 26/08/16 08:14, mlzarathus...@gmail.com wrote:

I was being facetious, but behind it is a serious point. Neither the APL nor 
the J languages use precedence even though their inventor, Ken Iverson, was a 
mathematician.

That was to support functional programming dating back to the 1970's.

Precedence is not the issue here anyway. Both '*' and '/' have the same precedence. The two operations in your expressions have to be evaluated in SOME order - either left-to-right or right-to-left.


The issue is twofold:

Firstly, the compound assignments will always evaluate their RHS before performing the assignment - this is not the same as operator precedence - they have to, else what does Python pass to the function that knows what the compound assignment means for that type (e.g. sequences may be extended for '*=')? So for compound assignments there is always effectively an implicit set of parentheses around the RHS compared to the expression without the assignment operator (if you think of the compound assignment as being a _part_ of the overall expression).

Secondly, the way you have chosen to layout your code has fooled your brain into thinking that the division is performed before the multiplication. Python doesn't care that you jammed the sub-expression together with no whitespace ;)

E.

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to