Date: Mar 14, 2006 11:55 AM
Author: Ben Rudiak-Gould
Subject: Re: Reason for operator precedence
Tony wrote:

> I was wondering what the reason is for having multiple levels of operator

> precedence?

>

> Phrased another way, why is it that we don't just evaluate everything from

> left to right?

Your use of "just" suggests that you think that there's already a rule that

unparenthesized expressions are evaluated from left to right in the absence

of overriding precedence rules. Actually there's no such rule. The

expression "x - y + z" is a shorthand for "x + (-y) + z", where (-y) denotes

the additive inverse of y. The additions may be done in any order because

addition is associative. A mathematician would never write an expression

like (x # y # z) if # was not associative, because that would be ambiguous.

The notion of "left associative" and "right associative" infix operators is

peculiar to computer science, as far as I know. It shows up mostly in

programming language grammars, but also in the lambda calculus, where xyz

means (xy)z, which is different from x(yz). If there are examples of this

kind of thing outside of computer science, I'd be interested in hearing

about them.

-- Ben