Macaulay2 » Documentation
Packages » Macaulay2Doc > The Macaulay2 language > operators > precedence of operators
next | previous | forward | backward | up | index | toc

precedence of operators

One aspect of parsing precedence is associativity. A left-associative operator is one, such as *, with the property that x * y * z is parsed as (x * y) * z. A right-associative operator is one, such as =, with the property that x = y = z is parsed as x = (y = z). These operators are left associative: # #? % & * ** + ++ , - . .. ..< .? / // << @@ ^ ^** ^< ^<= ^> ^>= ^^ _ _< _<= _> _>= | |_ ||, and these operators are right associative: != %= &= **= *= ++= += -= -> ..<= ..= //= /= : := ; < <- <<= <= <== <=== <==> <==>= = =!= == === ===> ===>= ==> ==>= => > >= >> >>= ? ?? ??= @ @= @@= \ \= \\ \\= ^**= ^= ^^= _= |- |-= |= |_= ||= and or SPACE xor .

Here are the operators arranged in order of increasing parsing precedence. For example, * has higher parsing precedence than +, and hence 2+3*5 is parsed as though it had been written as 2+(3*5). The symbol SPACE represents the operator that is used when two things are adjacent in program code.

 8                                                                                   ;                                                                                
    
10                                                                                   ,                                                                                
    
14  %=  &=  **=  *=  ++=  +=  -=  ->  ..<=  ..=  //=  /=  :=  <-  <<=  <==>=  =  ===>=  ==>=  =>  >>  >>=  ??=  @=  @@=  \=  \\=  ^**=  ^=  ^^=  _=  |-=  |=  |_=  ||=
    
18                                                                                  <<                                                                                
    
20                                                                                  |-                                                                                
    
22                                                                              <===  ===>                                                                            
    
24                                                                                 <==>                                                                               
    
26                                                                               <==  ==>                                                                             
    
28                                                                                ??  or                                                                              
    
30                                                                                  xor                                                                               
    
32                                                                                  and                                                                               
    
34                                                                                  not                                                                               
    
36                                                                   !=  <  <=  =!=  ==  ===  >  >=  ?                                                                
    
38                                                                                  ||                                                                                
    
40                                                                                   :                                                                                
    
42                                                                                   |                                                                                
    
44                                                                                  ^^                                                                                
    
46                                                                                   &                                                                                
    
48                                                                                ..  ..<                                                                             
    
50                                                                               +  ++  -                                                                             
    
52                                                                                  **                                                                                
    
56                                                                          %  *  /  //  \  \\                                                                        
    
58                                                                                   @                                                                                
    
60                                                                                 SPACE                                                                              
    
62                                                                                  (*)                                                                               
    
64                                                                                  @@                                                                                
    
66                                                                           ^*  ^~  _*  _~  ~                                                                        
    
68                                                    #  #?  .  .?  ^  ^**  ^<  ^<=  ^>  ^>=  _  _<  _<=  _>  _>=  |_                                                 
    
70                                                                               !  ^!  _!                                                                            

See also