|


Precedence of Unary OperatorsDate: 09/01/99 at 22:51:05 From: Tyler Longman Subject: Unary operator precedence / examples My Dad, who is a programmer, brought up the question of the precedence of unary operators with respect to what I'm learning in math. The PEMDAS rule for order of operations ignores unary operators, and my Dad, despite his trying for several hours, was unable to come up with a problem that displayed the effects of not giving unary operators their proper precedence. His knowledge of unary operator precedence comes from the world of computer programming, not necessarily the same as in the mathematics world (computer software vendors occasionally develop their own precedence schemes). Anyway, one list I found showed unary operator precedence below that of multiplication/division and above addition/subtraction. But this seems to disagree with what my Dad believes he was taught in college, namely that unary operators have a precedence right after that of parentheses. Can you help explain all of this and maybe give an example showing how ignorance of the unary operator precedence can cause an incorrect result? Many thanks, Tyler
Date: 09/02/99 at 11:59:50
From: Doctor Peterson
Subject: Re: unary operator precedence / examples
Hi, Tyler. Good question. I'm a programmer too, so I appreciate what
you're talking about.
I can easily think of an example, one that we are asked about all the
time:
-3^2
The negation operator properly has precedence below the exponential,
so that this means
-(3^2) = -9
rather than
(-3)^2 = 9
We don't usually list unary operators in PEMDAS because they're
thought of as being implied by the rules for binary operations. You
can think of the minus sign as either subtraction
-3^2 = 0 - 3^2 = 0 - 9 = -9
or multiplication
-3^2 = -1 * 3^2 = -1 * 9 = -9
and in either case it has lower precedence than exponentiation, so it
gives the same result. I can't think of any case where it would matter
which of these two latter interpretations we give, that is, any case
where giving "-" an additive precedence or a multiplicative precedence
will make a difference in the result; commutativity and distributivity
seem to take care of that. For example,
(-2) * 3
(putting negation at the same level as multiplication) is the same as
-(2 * 3)
(putting it after multiplication). But certainly negation must not
have a lower precedence than addition, because then
-2 + 3
would mean
-(2 + 3)
which is so contrary to sense that it's hard to imagine doing it.
When negation is listed in the order of operations, it's commonly put
with or just above the multiplicative operators. After all, it is
essentially a form of multiplication.
You're right that each programming language defines its own
precedence; they generally try to follow tradition, but there can be
special issues that force them to modify it. Here's the list for C:
() [] . -> ("primary expression operators")
* & - ! ~ ++ -- (unary operators)
* / % (binary operators: multiplicative)
+ - (additive)
>> << (shift)
< > <= >= (comparison)
== != (equality)
& (bitwise and)
^ (bitwise exclusive or)
| (bitwise or)
&& (logical and)
|| (logical or)
?: (ternary operator: conditional)
You see that C does put unary operators right after parentheses; but
since there is no exponent operator, this doesn't conflict with my
rule.
You may be interested in this page I ran across, on the order of
operations in Microsoft Excel. It says that they evaluate unary minus
before exponentiation, and will not change it though they acknowledge
that this is different from the normal order:
http://support.microsoft.com/support/kb/articles/q132/6/86.asp
- Doctor Peterson, The Math Forum
http://mathforum.org/dr.math/
|
Search the Dr. Math Library: |
[Privacy Policy] [Terms of Use]


Ask Dr. MathTM
© 1994-2013 The Math Forum
http://mathforum.org/dr.math/