A strike gives its operators a precedence: precedence.low_first counts level 1 as the loosest (good practice), each level says how a chain reads, and a language operator in a…
precedence_levels.zg
# A strike gives its operators a precedence (owner, 2026-10-03): `precedence.low_first` counts level 1# as the loosest (good practice), each level says how a chain reads, and a language operator in a# level pins it where that operator is. std's `pow` binds above a negative, right pair first.structVec{x:bin64,y:bin64}precedence.low_first{level1{equal_to,~=}refusedlevel2{plus}left_firstlevel3{times,dot}left_firstlevel4{scale}left_first}opdot['a':Vec,'b':Vec]->bin64{return('a'.xtimes'b'.x)plus('a'.ytimes'b'.y);}opscale['a':Vec,'k':bin64]->Vec{returnVec[x='a'.xtimes'k',y='a'.ytimes'k'];}op~=['a':bin64,'b':bin64]->bool{return('a'minus'b')<0.000001and('b'minus'a')<0.000001;}MAIN{let'u':=Vec[x=1.0,y=2.0];let'v':=Vec[x=3.0,y=4.0];let'd':='u'dot'v'plus1.0;# ('u' dot 'v') plus 1.0let'w':='u'scale2.0dot'v';# ('u' scale 2.0) dot 'v'let'ok':='d'~=12.0;std::print.useful['d'," ",'w'," ",'ok',newln];std::print.useful[2pow3plus1," ",2pow3pow2," ",-2pow2," ",2times3pow2,newln];}