Here are the binary and unary operations allowed by ParaFlow 
listed in order of precedence:

Prec.	Symbol	Function
------------------------
0       .       Field selector.
0       ()      Function call.
0       []      Array index.
1	!	Logical not
1	~	Bitwise not
1	-	Unary minus
2	*	Multiplication
2	/	Division
2	%	Modulo (remainder after division)
2	<<	Bitwise shift left
2	>>	Bitwise shift right
2	&	Bitwise and
3	+	Addition.  String concatenation.
3	-	Subtraction.
3	|	Bitwise or.
3	^	Bitwise xor.
4	==	Logical equality (as opposed to assignment)
4	!=	Logical not equals
4	>=	Greater than or equals
4	<=	Less than or equals
4	>	Greater than
4	<	Less than
5       &&      Logical and.
6       ||      Logical or.
7       to      Range specifier (1 to 10).
8       of      Type compositer (array of int).
9	=	Assignment. Set variable equal to a value.
9       +=      Add right side to left side.
9       -=      Subtract right side from left side.
9       *=      Multiply right side by left side.
9       /=      Divide right side by left side.
9       :       Make key : value pair.
10	,	Separate items on a list

In general this is close to the operations and precedence in C, C++, and 
Java.  The main difference is in the bitwise operators.  In practice bitwise
shifts and bitwise ands are most often used for fast multiplication, division
and modulus operations involving factors of two, so they are put at the same 
precedence level as these arithmetic operators rather than at the level of
the logical operators.  The 'to' and 'of' operators are new with ParaFlow.
It is convenient that the to operator be relatively low precedence.  The
precedence of the of operator doesn't matter much since it is only used
in type expressions, though it needs to be lower than the priority of []
for the parameterized types to work without additional parenthesis.
