Binary and unary expressions code generation bug

When generating code for binary expressions, the generator should add parentheses to respect the operator precedence if the inner expressions are binary expressions or unary expressions.

Same goes with unary expressions.