Using && or || in a ternary operator

I have a simple problem, but I’m not sure why I can get this one to work.

function bibBub(integer) {
    return ! integer % 2 && integer % 3 ? "bibbub"
           : !(integer % 2)? "bib"
           : !(integer % 3)? "bub"
           :''; 
}
bibBub(6);

I expected by passing in the integer 6, I’d get bibbub. Does anyone know why?

Update
This one works, but if you can make it simpler please do!

function bibBub(integer) {
    return !(integer % 2)&&!(integer % 3)? "bibbub"
           : !(integer % 2)? "bib"
           : !(integer % 3)? "bub"
           :''; 
}


bibBub(2);


Use parentheses to group. Given what you are interested in, you need to enclose

like

return !( integer % 2) &&  !( integer % 3) ? "bibbub"

To understand more about order of precedence
Read here on MDN

function bibBub(int) {
    let output = '';
    if (int % 2 === 0) output += 'bip';
    if (int % 3 === 0) output += 'bup';
    return output;
}