Olá, Thaynara!
Ótima pergunta! A diferença entre colocar uma função com () e sem () é bem importante de entender.
Quando você coloca os parênteses após o nome da função, como em filtrarLivros(), você está chamando a função imediatamente. Ou seja, ela será executada no momento em que o código for lido.
Por outro lado, quando você passa apenas o nome da função, como em filtrarLivros, você está passando a referência da função para o evento click. Isso significa que a função será executada somente quando o evento click ocorrer.
No seu exemplo, se você usar filtrarLivros() com os parênteses, a função será chamada imediatamente e o retorno dela será passado para o evento click. Porém, se você usar filtrarLivros sem os parênteses, a função será executada somente quando o evento click ocorrer.
Vamos supor que a função filtrarLivros retorne um valor. Se você usar filtrarLivros() com os parênteses, o retorno dessa função será passado para o evento click. Por outro lado, se você usar filtrarLivros sem os parênteses, a própria função será passada para o evento click, sem executá-la imediatamente.
Portanto, no seu caso, se você quer que a função filtrarLivros seja executada apenas quando ocorrer o evento click, você deve passar apenas o nome da função, sem os parênteses.
Espero ter ajudado e bons estudos!