use operator priority to add parenthesis only when necessary
This makes the generated C++ code more human-readible, but we still might want to add unnecessary parenthesis on purpose.
This makes the generated C++ code more human-readible, but we still might want to add unnecessary parenthesis on purpose.