Hello there,
Lets see if we can cut the pages down right now
Sometimes the answer to a question depends on the background context. You can not answer it either way until you decide on a priority, and the priority depends on the context.
For example, if the context is "pure mathematics" then the answer has to be 9 because multiplication and division both have the same priority. This is the same as pure algebra, where the order of operations is multiplication and division before addition and subtraction, but there is no preference for multiplication over division.
On the other hand, if the context is one of those calculators that defines an implied multiplication to have priority over division, then no sign between numbers will be a multiplication that takes priority over division.
It just so happened that in the past i wrote an entire program for a programmable calculator that does scientific calculations and integrations and even solves differential equations, and one of the things i made sure to do was prioritize the multiplications the same as the divisions so the calculator would always handle these operations as close as possible to the way a mathematician would do it. I also took part in the writing of language interpreter programs that had to handle algebraic expressions, and i was sure to do the same there as were all the writers before me. I can say first hand that it is better to program the calculator or programming language interpreter mathematics as pure algebraic, although that's not the only possible way to do it.
The bottom line is you have to know how the device or program will handle your math expressions, and where you are to migrate from one device to another you have to be ready to translate by hand the expressions from one device for use on another. That means if your calculator handles implied multiplications as higher priority (giving you an answer of 1) and you transfer it to another program that does not recognize that, then you have to recode it into 6/(2*(1+2)) or else you will not get the result you are expecting.
Just to illustrate the coding of a math expression handler, one of the first things to do is to encode the priority of each operation, and since each operation is a character, that can be used as an index into an array such as:
p['+']=2;
p['-']=2;
p['*']=3;
p['/']=3;
where you can note that add and subtract have priority 2, while multiplication and division have higher priority but both the same. This method of prioritizing produces a result of 9.
The priority of those above plus a higher priority for implied multiplication might look like this:
p['+']=2;
p['-']=2;
p['*']=3;
p['/']=3;
p[' ']=4;
where the implied multiplication is done with a space rather than '*', and has higher priority so it would be done before operations involving '*'. This kind of prioritizing would produce a result of 1.
So you can see that the result depends on how the guy who programmed it decided to do it, and that's about the end of it.
Of course parens always have higher priority than the other operations.