# DSL reference: operators ## Operator precedence Operators are listed in order of decreasing precedence, highest first.
Operators Associativity --------- ------------- () left to right ** right to left ! ~ unary+ unary- & right to left binary* / // % left to right binary+ binary- . left to right << >> left to right & left to right ^ left to right | left to right < <= > >= left to right == != =~ !=~ left to right && left to right ^^ left to right || left to right ? : right to left = N/A for Miller (there is no $a=$b=$c)## Operator and function semantics * Functions are often pass-throughs straight to the system-standard Go libraries. * The `min` and `max` functions are different from other multi-argument functions which return null if any of their inputs are null: for `min` and `max`, by contrast, if one argument is absent-null, the other is returned. Empty-null loses min or max against numeric or boolean; empty-null is less than any other string. * Symmetrically with respect to the bitwise OR, XOR, and AND operators `|`, `^`, `&`, Miller has logical operators `||`, `^^`, `&&`: the logical XOR not existing in Go. * The exponentiation operator `**` is familiar from many languages. * The regex-match and regex-not-match operators `=~` and `!=~` are similar to those in Ruby and Perl.