Vorrei una mano ad esaminare questa parte di codice

Stavo vedendo un tutorial su come rilevare fonti di salita e discesa di un pulsante (ecco il link del video se nel caso interessi a qualcuno https://www.youtube.com/watch?v=Utl1bhzv0dY&list=PL9_01HM23dGEDNNfR6BtlDWD8DDoAcLOT&index=43)
ed apputno per rilevare salita e discesa di un pulsante il codice era questo

bool tasto;
bool prev_tasto;
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
pinMode(8,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly: 
  tasto = digitalRead(8);
  if(!prev_tasto && tasto){
    Serial.println("OFF-ON SALITA");
    prev_tasto = tasto;
  }
 if(prev_tasto && !tasto ){
    Serial.println("ON-OFF DISCESA");
    prev_tasto = tasto;
  }
}

Non ho capito perché nella condizione if viene messo una porta logica end qualcuno può spiegarmelo?

Sai che cosa è un "fronte" di salita o di discesa?
Conosci la logica booleana?
La risposta ad una di queste due domande ( o ad entrambe) è no, altrimenti non avresti fatto la domanda.
Ti consiglio di documentarti su queste 2 cose, perarltro non molto difficili, e la risposta verrà da sola.

Ciao, Ale.

La logica AND rileva il cambiamento di stato: se prev_tasto era falsa e tasto è vera, vuol dire che lo stato del tasto è cambiato da non premuto a premuto.

Questo non è detto, dipende da come è collegato il tasto (e dal codice riportato non lo si può capire).

Ma sicuramente se prev è false/0 /LOW, e/and attuale è true/1/HIGH, siamo a un fronte di salita.

Non necessariamente di un tasto, potrebbe essere un fronte generato da un PIR, o da un timer (anche solo software).