Specify operator precedence for infix functions

I suspect that overloading &, | and ^ might have been more popular if it had been better explained in the survey what they were supposed to be overloading in the first place.

Whilst it would arguably have been better if Kotlin had implemented the ‘traditional’ bitwise operators (&, |, ^, ~, <<, >>) in the first place, it seems to me that this ship has now sailed and we should therefore concentrate on improving the corresponding infix operators so that they have an assignment form (x and= y, or whatever) and that there is some way of controlling the priority.

It is sometimes forgotten that and, or and xor can also take boolean operands as well as integer operands even though they are rarely used. The only reason I can think of why the first two would be preferred to && and || is because you always wanted the second operand (perhaps a function call) to be evaluated because of some side effect. However, even in C programming, this is considered bad practice nowadays and so they are virtually useless in Kotlin itself.

I could therefore see the sense in the boolean versions of these infix operators being replaced by &, | and ^ as it would break very little code and make these operators available for overloading in DSLs etc. An assignment form would then be no problem and the priority would be what (most of us) would expect