First of all:

http://www.youtube.com/watch?v=z5jKMEB4hHE

On Wed, Feb 29, 2012 at 12:09:16AM -0800, Xah Lee wrote:
> Now, let me tell you what operator precedence is. First of all, let's
> limit ourselfs to discuss operators that are so-called binary
> operators, which, in our context, basically means single symbol
> operator that takes it's left and right side as operands. Now, each
> symbol have a “precedence”, or in other words, the set of operators
> has a order. (one easy way to think of this is that, suppose you have
> n symbols, then you give each a number, from 1 to n, as their order)
> So, when 2 symbols are placed side by side such as 「3 △ 6 ▲ 5」, the
> symbol with higher precedence wins. Another easy way to think of this
> is that each operator has a stickiness level. The higher its level, it
> more sticky it is.

You're absolutely correct.

> the problem with the perl explanations is that it's one misleading
> confusion ball. It isn't about “left/right associativity”. It isn't
> about “evaluates from left to right or right to left”. Worse, the word
> “associativity” is a math term that describe a property of algebra
> that has nothing to do with operator precedence, yet is easily
> confused with because it is a property about order of evaluation. (for
> example, the addition function is associative, meaning: 「(3+6)+5 =
> 3+(6+5)」.)

You're not getting it.

Math is a language.  Perl is a language.  They have different rules for
grammar.  In Perl, C, Python, Java, and pretty much all procedural-based
languages, operations are evaluated in two steps: the precedence /and/
the associativity.  Each level of precedence has its own associativity,
either left-to-right or right-to-left.  You can see this in table 2-1 in
The C Programming Language.  Whatever math does or what you think math
does has nothing to do with the way Perl evaluates expressions.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to