The main reason why it does what it does is because of the precedence of the operators:
Precedence[Decrement]
Precedence[Minus]
Precedence[Subtract]
I'm not sure if you can alter these because it will have huge effect on all the internal code as well...