It is entirely convention. PEMDAS is merely convenient for mental manipulation of symbols on the page. Parentheses alone would be adequate enough to specify order of operations.
In fact, in the Lisp programming language, this is exactly the way things are done. Lisp was designed to have the most simple syntax possible. Everything in the entire language can be written with symbols (names like f, x, cons, lambda, +, *, ...), numbers (0, 1, 2, ...), and parantheses (... do I really need to put parentheses inside parentheses?...). The operator/function name is written first, followed by the operands. So the expression x + 2y + 1 would be written as (+ (+ x (* 2 y)) 1). The result is a syntax which is easy for a computer to parse and which is totally unambiguous.
In written math, though, it's much more important that the notation cater to the human mind, not to a computer. Humans can infer meaning based on context, so it can be somewhat ambiguous. Our PEMDAS notation makes it easy to write out, group things, and mentally move symbols about the page.
We can leave off needless parentheses (which would otherwise just be "line noise" in programmer terminology), and we can do operations in parallel. If you want to know a polynomial's power, the raised position of the exponents makes it very fast to visually track down the biggest power.
When a linear operator is applied to a polynomial, it's very easy to distribute the operator over the terms.
In defining functions and doing calculus, we almost always rely on the convention of using one of x, y, z, u, v, t, s, w, or some Greek letter for the parameter. You don't see too many f(g) = g^2 - 1, even though syntactically, it's totally legitimate.
One source of confusion in programming languages (and I'm sure, in some areas of math) are use of unfamiliar operators. There are tons of operators in programming, such as &&, |, ++, !, ~, >>, <<, and ^, which appear over and over again... and it's not always clear what their precedence is. A good programmer will always put those expressions in parentheses, so other programmers, who might not be as intimately familiar with the language, are able to figure out the meaning without having to look it up in the manual. In Haskell, the situation is FUBAR beyond belief, because any programmer can define new operators and give them their own precedence.