Il primo, a spiegarlo punto per punto ci vuole un'eternita'.
Ma tutto sommato e' abbastanza banale, basta che smonti il codice un pezzetto alla volta.
Comincia con il perche' dei 3 digit uguali, e poi vai a ritroso per ragionamento.
C'e' ancora un aspetto subdolo da considerare: come funziona && ?
La tua prima risposta e' sbagliata! Sicuro al 1000%!
Devi andare a spulciare le specifiche del linguaggio!
Il secondo e' banale!