Abstract: even in mathematics, ambiguities can be hard to spot. The phenomenon seen here in arithmetic goes beyond the usual PEMDAS rule and illustrates an ambiguity which can lead to heated arguments and discussions. |
"The problem 2x/3y-1 with x=9 and y=2 was actually posed for a 5th grade homework question and it is interesting how much debate has occurred between our parents. The students who had help from parents had the answer of 2. The teacher explained that the correct answer was 11." |
x=9; y=2; (2x/3)y-1 gives 11 2x/(3y)-1 gives 2It is not clear what the textbook had intended with the 3y. As written, it can be interpreted both ways. Yes, one could argue that without brackets the given order matters. One can however also argue that "3y" is a unit which belongs together. So, everybody is right and that the textbook problem has just been unclear."
x/3x 2 x Out[1]= -- 3 x/(3x) 1 Out[2]= - 3The computer has chosen to do the division first. This is natural if one looks as division and multiplication as operations on the same level. To play the devils advocate, note however that the famous PEMDAS (parenthesis, exponents, multiplication, division, addition and subtraction) has the M before the D so that we would have to accept the second one ...
gives both 10/3. Try it out. Funny by the way (and totally unrelated to the topic discussed here) that the results are different
3.333333333333333 3.3333333333333335illustrating that computers do not honor basic laws of arithmetic. The mathematics of rounding error arithmetic is subtle. My PhD advisor Oscar Lanford knew much about this. By the way, also Mathematica adhers to BEDMAS and does division before multiplication. It is in line with Excel and javascript as probably most programming languages like Perl.
3+4-3 = (3+4)-3 = 3+(4-3)This is called associativity. But already this is trickier if one tries to modify this because
3-4+3 = (3-4)+3 = 3-(4+3)How come, associativity does not hold here? You find out. Since the logarithm gives an isomorphism between the group (R,+) and (R -{0}, *), where * is multiplication, we also have ambiguities in the multiplicative case evenso the multiplicative group (R-{0},*) is by definition associative. But it is the role of the division which must be made clear:
12/(3*2) = 2 (12/3)*2 = 8gives different answers. This can not be discovered well in algebra situations like
12/3xwhich is ambiguous. Both of the following expressions are clear, but give different results:
12/(3*x) = 4/x (12/3)*x = 4xThis is also often a source of error in addition, as the minus sign has to be carried through:
3-4+3 (3-4)+3 = 2 3-(4+3) = -5It is this case which makes the argument that the bracket should be placed to the left. The additive case is also a reason which seduces not to write the brackets in the multiplicative case. It always leads to trouble.
x/x/x ?We again have two interpretations
(x/x)/x = 1/x x/(x/x) = xBut since now, we have only divisions and no multiplication, it is even less clear what comes first. When dealing with fractions, we often make this clear by the size of the division lines
x ----- x = x - xIt has become clear that we first do the division with the smaller division line and
x - x = 1/x ---- xWhat does Mathematica do? Lets look and enter
2/100/2
2/(100/2) = 1/25 (2/100)/2 = 1/100Mathematica choses the second choice (as does javascript). It makes the first division first.
3^3^3 ?Again we have an ambiguity with two cases:
(3^3)^3 = 19683 3^(3^3) = 7625597484987Leaving out the brackets invites trouble. Yes, one could argue that the first example is more natural, but then, a printed version of a textbook might have the third 3 smaller so that the reader is seduced to first compute 3^3 and put that into the exponent, producing a much larger number. In the following example, this is even less clear what the writer intends because expressions like 10^{2} are often treated together as we write 10^{6} for a million. The 10^{6} has become a unit: so, if we write
2^10^2which of the two answers
(2^10)^2 = 1048576 2^(10^2) = 1267650600228229401496703205376is correct? Maybe we should ask our professional computer algebra system again. Mathematica 9.0 gives the second choice, if 2^10^2 is entered!
For (a/b/c) the algebra system starts evaluating from the left, while for (a^b^c) it starts evaluating from the right. |
There is only one solution: write the parenthesis. |
256 // Sqrt // Exp // Floor // PrimeQwhich takes the square root of 256, then exponentiates it, take the integer part and then answers the question whether this is prime. It is equivalent to
PrimeQ[Floor[Exp[Sqrt[256]]]]but avoids the brackets. I use the first way often when computing interactively, while the second one when writing code like the following which looks for the statistics of primes in a subexponential sequence of integers:
F[n_]:=Floor[Exp[Sqrt[n]]]; s=Table[If[PrimeQ[F[n]],1,0],{n,1000}]; G[n_]:=Sum[s[[k]],{k,n}]*Log[n]/n; ListPlot[Table[G[n],{n,Length[s]}],PlotRange->{0,1}]If you are curious: here is the Plot.
"Internet rumors claim the American Mathematical Society has written "multiplication indicated by juxtaposition is carried out before division," but no original AMS source exists online anymore (if it ever did). Still, some early math textbooks also taught students to do all multiplications and then all divisions, but most, such as this 1907 high-school algebra textbook, this 1910 textbook, and this 1912 textbook, recommended performing all multiplications and divisions in the order they appear first, followed by additions and subtractions. (This convention makes sense as well with the Canadian and British versions of PEMDAS, such as BEDMAS, BIDMAS, and BODMAS, which all list division before multiplication in the acronym.) The most sensible advice, in a 1917 edition of Mathematical Gazette, recommended using parentheses to avoid ambiguity. (Duh!) But even noted math historian Florian Cajori wrote in A History of Mathematical Notations in 1928-29, "If an arithmetical or algebraical term contains / and x, there is at present no agreement as to which sign shall be used first."The article has links to sources of textbooks. Here is entry 242 in Florian Cajoris book "A history of mathematical notation" (page 274), which is mentioned in that quote
1+2x3 = 9 Microsoft calculator in standard view 1+2x3 = 7 Microsoft calculator in programmers viewIt shows that the same vendor, in a framework where no ambiguity exists (nobody has ever questioned that multiplication should go before addition), an ambiguity in the same product. An other example from that article mentions Texas Instruments calculators
1/2x = 1/(2x) in TI-82 calculator 1/2x = (1/2)x in TI-83 calculatorSelfproclaimed rules like this are hardly helpful.
PEMDAS | BEDMAS | PE(MD)AS | |
6/2*(1+2) | 1 | 9 | 9 |
(1+2)*6/2 | 9 | 9 | 9 |
How on earth can you say it is ambiguous when it is AXIOMATIC that multiplication and division are inverse operations? How can you say it is ambiguous when ANY division can be expressed as multiplication by the reciprocal? Shame on you for perpetuating bullshit. |
Dear ..., you probably refer to http://www.math.harvard.edu/~knill/pedagogy/ambiguity/ It is not about whether the division is the inverse of multiplication. That is the definition. This is not where the ambiguity is. It is that the notation is ambiguous (and experience shows that that it is a source for errors and misunderstandings). For example, if we write x/3x, then many humans understand the result as x/(3x) which is 1/3. If you give it to a machine, then it gives the result x/3x =x^2/3. Now, the question is whether there is a definite rule which tells, what is right. The PEMDAS rule, clearly puts multiplication before division so that x/3x = x/(3x) = 1/3. Most humans follow the PEMDAS rule. Because they have been taught so. There is also the BEDMAS rule in which the division comes before multiplication. In that case the result would be x^2/3. Now, if you look at the literature and history, then it turns out that there is no definite answer what is right. And if this is the case, we call it ambiguous. There is a camp which advocates PE(MD)AS where MD are on equal footing and where the order matters if multiplication is used together. But this makes things only more complicated as we have now three different interpretations. So if one writes such an expression like x/3x, one has to be careful and put the brackets. Everything else can produce misunderstandings. You are not the only one who feels very strong and become emotional about it. |
I was told that when you multiply and divide (since the order of operation does not matter) you never need to use parentheses, is this right? Because 2 * 3 / 4 * 6 on my calculator give me 9, and I was expecting 0.25! To me this should be the equivalent to 2*3/(4*6) because, since we don't need parentheses, it's the only way to type it without them. If I want to calculate 2*3/4*6, like my calculator does, I should type 2 * 3 * 6 / 4 is this correct?My answer
The order of operations matter. You need to put parenthesis. I like the example you give. It already illustrates it well. Most humans would get 6/24=1/4 as you did. Most programming languages (computers) give 9. The computer follows PEDMAS (division before multiplication 2 (3/4) 6 = 9 or do with (MD), whatever comes first ((2*3)/4)*6 = 9 Humans (and most recommendations, like professional societies like AMS follow PEMDAS, which means you first do multiplication and then division (2*3)/(4*6) = 1/4 But it does not make sense to follow a recommendation if different interpretations exist and computers do it different. There are lots of different opinions about it on the web. There is only one way out. Just write the parenthesis, also when using a computer. Here is an other nice example which only uses division: ((2/2)/2)/2 = 1/4 (2/(2/2))/2 = 1 (2/2)/(2/2) = 1 2/(2/(2/2)) = 1 2/((2/2)/2) = 4 The computer follows here the rule (left to right) and gives 1/4. But in this example: (3^3)^3 = 19683 (3^(3^3)) = 7625597484987 the computer goes from right to left. Also here, brackets are required.November 4, 2018: S. A. sent an interesting angle to the story: It is the recommendation to simplify then remove Parentheses.
I read your blog on programming issues as to MD or DM. The problem is they all conflict with the first law of Algebra. Simplify then REMOVE Parentheses. These conventions all violate that by saying only simplify brackets INSIDE. So at first I like you said AMBIGUOUS to 6/2(1+2) 1 or 9 However, I took a nap, astral surfed over to old Euclid and he laughed. Proof 1 and 9. 6/x=1 or 6/x=9 When x=2(1+2) 2(1+2)=2(3)=6 6/6=1 So not teaching students to remove parentheses in new math is conflicting with first law of algebra. All these acronym conventions need to be corrected to reconcile with 1st law of algebra. So do you agree the new math conventions need to agree with Euclids first rule of Algebra? I think it does.Here was my answer:
It is an interesting angle. But note that the recommendation to ``simplify" is where the problem of the ambiguity is located: Yes, one can simplify 6/2(1+2) by introducing x=2(1+2) = 6, then get 6/6=1 But one can also simplify by defining x=6/2, then get x(1+2) = 9. Actually, it is also historically interesting. You mention Euclid. Euclid did not use any algebra as we know it. Symbolic algebra came only with Viete in the 16th century. As far as we know, one only realized in the 20th century that there is really an ambiguity. It is clearly stated in Cajori's book on mathematical notation. It has also become a pedagogical issue: students today get mostly taught the PEMDAS rule which formally puts multiplication before division and would recommend the result 6/2(1+2) =1. If you give the expression to a computer algebra system they all give 6/2(1+2) = 9. It was examples like that which produced all these discussions. The first rule of algebra is still a nice rule. It is good advise. Unfortunately it does not resolve the ambiguity. But I agree that it helps a writer to avoid the ambiguity. But you know, the issue came up mostly in educational settings. If a teacher asks a student what is 6/2(1+2) , the teacher does not want to simplify that, as it would already solve the problem. If today, a teacher asks students what is 6/2(1+2), then this is just asking for trouble. The right thing to do is to clarify and either write (6/2)(1+2) or 6/(2(1+2)). It was clear already to Cajori that avoiding the paranthesis does not produce well defined mathematical expressions. OliverDecember 3, 2018: Atmos added an other interesting angle
A potential solution for this controversy could be that when you have coefficients and variables written together without operators between them, e.g. 5ab, we should be able to treat this as a nested operation. In other words, the lack of an operator symbol implies that the relationship between them takes precedence over any operations outside, i.e. 5ab represents (5 * a * b). So if you had a / bc, there is only one operator written (the division symbol), and the "bc" part would be implied to be nested because of the omission of the operator within. So it would still be "a over bc," exactly what it looks like and how many of us were taught. And then if we need to signify that the operation between a and b actually takes precedence over the relationship between b and c, then we would just write a / b * c instead. No fuss, no muss. Isn't that a much more efficient way of communicating with the mathematical language here? And isn't that the point of a mathematical language, to communicate concepts effectively? Otherwise this kind of confusion will never go away, and we will have to write a lot more parentheses in our equations (and nobody wants to do that). Some people like the "new math" of the super strict PEMDAS interpretation specifically because it is an easy way to trick people and make the math more convoluted than it needs to be. Yet that seems to defeat the entire point of why we do this stuff in the first place. I get both ways of doing it, but the strict PEMDAS method seems counterproductive because it causes so many problems, and it does things like making an ostensibly simple fraction like 2x / 3y into actually meaning 2xy / 3 instead, which seems completely insane. But if instead we just use PEMDAS when the operators are actually written, then all of these kinds of problems would literally vanish overnight. The "old math" and the "new math" would finally agree, and we could accomplish it all with one very simple rule. What do you think about that?I wrote back
Hi Atmos, leaving away the multiplication signs is already routinely done. Actually most of the time. There can be an additional problem however when using numbers rather than variables like 3/45 is not the same than 3/4 5 But you contribute an interesting point because there is now even more ambiguity 3/45 = 3 over 45 = 1/15 3/(4*5) = 3 over 20 = 3/20 (3/4) 5 = 3/4 times 5 = 15/4 The PEMDAS problem is not a problem to be solved. It is a matter of fact that there are different interpretations and that a human for example reads x/yz with x=3,y=4 and z=5 as 3/20 while a machine (practically all programming languages) give a different result. There are authorities which have assigned rules (most pupils are taught PEMDAS) which is one reason why many humans asked about 3/4*5 give 3/20 which most machines asked give 15/4: I type this in Mathematica x=3; y=4; z=5; x/y z and get 15/4 It is a linguistic problem, not a mathematical problem. In case of a linguistic problem, one can not solve it by imposing a new rule. The only way to solve the problem is to avoid it. One can avoid it to put brackets. OliverUpdate of December 14, 2018: