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: # #? % & * ** + ++ , - . .. ..< .? / // << @@ @@? ^ ^** ^< ^<= ^> ^>= ^^ _ _< _<= _> _>= | |_ || · (missing documentation) (missing documentation) (missing documentation) , 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                                                                                            ·                                                                                         
    
54                                                                                        **  ⊠  ⧢                                                                                      
    
58                                                                                   %  *  /  //  \  \\                                                                                 
    
60                                                                                            @                                                                                         
    
62                                                                                          SPACE                                                                                       
    
64                                                                                           (*)                                                                                        
    
66                                                                                         @@  @@?                                                                                      
    
68                                                                                    ^*  ^~  _*  _~  ~                                                                                 
    
70                                                             #  #?  .  .?  ^  ^**  ^<  ^<=  ^>  ^>=  _  _<  _<=  _>  _>=  |_                                                          
    
72                                                                                        !  ^!  _!                                                                                     

See also


The source of this document is in Macaulay2Doc/ov_language.m2:1151:0.