Assuming I have a simple list of numbers, something like:
val numbers = List.range(1,10)
numbers.filter( x => ( x & 1 ) == 0 )
//
// overloaded method value & with alternatives:
// (x: Long)Long <and>
// (x: Int)Int <and>
// (x: Char)Int <and>
// (x: Short)Int <and>
// (x: Byte)Int
// cannot be applied to (Boolean)
// numbers.filter( _ & 1 == 0 )
//
numbers.filter( _ & 1 == 0 )
//  all good
numbers.filter( _ % 2 == 0 )
//  error
//
// type mismatch;
// found : Int
// required: Boolean
// numbers.filter( _ & 1 )
//
numbers.filter( _ & 1 )
Operators % and & has different priorities. So _ & 1 == 0 tries to compare one to zero and then perform & on boolean result.
See Scala Reference  6.12.3 Infix Operations :
increasing order of precedence:
(all letters)

^
&
= !
< >
:
+ 
* / %
(all other special characters)