# Changing operator precedence

Is there a way to change operator precedence for built-in symbols?

I'd like \[TensorProduct] (which I redefine to KroneckerProduct) to take precedence after dot, so that the following is true

A.B\[TensorProduct]C.D == (A.B)\[TensorProduct](C.D)

• Related: 140609. People tend to suggest workarounds rather than actual ways to change operator precedence. Edit You might give TensorProduct a HoldAll attribute and define downvalues (to TensorProduct) when a Dot object appears in TensorProduct. – jjc385 Apr 19 '17 at 16:24
• Also, how exactly do you redefine \[TensorProduct] to KroneckerProduct? – jjc385 Apr 19 '17 at 16:35
• I do TensorProduct=KroneckerProduct – Yaroslav Bulatov Apr 19 '17 at 20:14
• How about using CircleTimes = KroneckerProduct and then A.B\[CircleTimes]C.D – chuy Apr 20 '17 at 16:46

If you enter \[TensorProduct] using the input alias t*, then you can override the input alias to produce a TemplateBox with a SyntaxForm setting to lower the precedence:
CurrentValue[EvaluationNotebook[], {InputAliases,"t*"}]=TemplateBox[