bc: Precedence

 
 3.5 Precedence
 ==============
 
 The expression precedence is as follows: (lowest to highest)
 
      || operator, left associative
      && operator, left associative
      ! operator, nonassociative
      Relational operators, left associative
      Assignment operator, right associative
      + and - operators, left associative
      *, / and % operators, left associative
      ^ operator, right associative
      unary - operator, nonassociative
      ++ and -- operators, nonassociative
 
    This precedence was chosen so that POSIX compliant 'bc' programs will
 run correctly.  This will cause the use of the relational and logical
 operators to have some unusual behavior when used with assignment
 expressions.  Consider the expression:
 
      a = 3 < 5
 
    Most C programmers would assume this would assign the result of "3 <
 5" (the value 1) to the variable "a".  What this does in 'bc' is assign
 the value 3 to the variable "a" and then compare 3 to 5.  It is best to
 use parentheses when using relational and logical operators with the
 assignment operators.