This is in no way an exhaustive list. I'm only mentioning my preferred ones.
It is a simple Python script that can download videos from literally hundreds of sites including Facebook and YouTube. Just type
youtube-dl followed by the video url in a terminal (command prompt) to download the video at the best quality. It lets you download complete playlists, search results, store subtitles separately, etc. Their Github page has instructions for advanced users. It is also completely free and open source. This one is my favourite.
Play Store doesn't allow any apps that let you download videos from YouTube. So you'll have to install it from their website or through a third-party apk store like Aptoide. Be aware that it asks for coarse location permission.
I think that is for the ads. I don't have a reason to think that it has any malware. Videoder also lets you download videos from many other websites.
If you do not want to install any software on your machine, you can use this website to directly get download links. It lets you choose the video/audio quality of the video. But in case of really high quality videos, audio needs to be downloaded separately. It also supports a bunch of other websites. I found it very handy
There are also a few browser extensions (including savefrom.net) that will add a download video button on YouTube, but I am uncomfortable giving extensions full access to my YouTube data. Also in most cases it slows down the page load and makes the page look bad. It's very rare that I want to store a YouTube video so I avoid installing those extensions.
Which of these is your favourite? Or do you have your own method?