Diferencias entre // y / descendiente en XPath seleccionando múltiples hijos

No puedo entender claramente las diferencias entre usar//element y/descendant::element al seleccionar varios hijos de un elemento base en XPath.

Dado este fragmento de HTML

<html>
<body>
<div class="popupContent">
  <table>
    <tr class="aclass"><td> Hello </td> <td> <input type="text" value="FIRST" /> </td></tr>
    <tr class="aclass"><td> Goodbye </td> <td> <input type="text" value="SECOND" /> </td></tr>
  </table>
</div>
</body>
</html>

Necesito seleccionar cadainput basado en su posicionamiento en la mesa.//div[@class='popupContent']//input[1] esto selecciona la primera entrada//div[@class='popupContent']//input[2] esto daerror //div[@class='popupContent']/descendant::input[1] esto nuevamente selecciona la primera entrada//div[@class='popupContent']/descendant::input[2] esto selecciona la segunda entrada

Utilizando/descendant::input hace lo que necesito: tomar todas las entradas y dejarme seleccionar por posición.
Cómo// ¿diferir de? ¿Por qué devuelve solo el primer elemento y no los siguientes?

Soy consciente deesta otra pregunta pero la respuesta básicamente dice que son alias y apuntan a la documentación, que no puedo entender y carece de un ejemplo concreto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta