a = b*c + d;
This approach is severely flawed-the compiler doesn't parse code properly without specific syntax. The compiler parses expressions based on the rules determined by the people that developed the compiler. To that end, a symbol exists that allows you to set precedence and associativity: the parenthesis. For example, you could rewrite the expression a = b * c + d as either a = (b * c) + d or a = b * (c + d), and the compiler will evaluate what's in the parentheses first. If two or more pairs of parentheses exist, the compiler evaluates the value in each pair and then the entire statement by using the precedence and associativity rules I've described.
My firm opinion is that you should always use parentheses when using multiple operators in a single expression. I'd recommend this even if you know the order of precedence because the folks who maintain your code might not be as well informed.