Application layer protocols are free to use any transport layer protocol abd then port number , there is no strict bounds , however we choose best suite , like for HTTPS , the best suite is TCP with port 80...
look here , IANA maintained records for ports and corresponding services
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?&page=1
We use TCP , where the reliability is major issue , where we can't digest the errors , like FTP uses TCP , if it uses UDP and as UDP is connection less so let suppose one time , you want to download a file and every time it's getting corrupt ...UDP provide no flow control , no error control...SMTP uses TCP , so there's quite a less probability that you are mailing someone and due to errors contents of mail are changed.....
due to larger header size (20-60B) and other services like flow control , error control TCP is slower than UDP , UDP doesn't establish any connection establishment type work , if it has something to send , it sends immediately so in that way it's fast....If your application wants faster delivery to responses use UDP like DNS uses , here you have to generate response to the domain name as fast as possible...
TFTP uses UDP because it has it's own ACK policy and so in that way it can deal with packet losts , so why to unnecessary slow down the response using TCP ....
Now come to the main point , DNS uses both UDP and TCP ? Yes! why?
there are specific cases when it's better to use TCP than UDP for DNS...like during Zone transfers (zone transfer is basically 'replicating the DNS Database between DNS servers ) It's a sensitive task so it's better to use TCP in that case...
https://tools.ietf.org/html/rfc5936
https://en.wikipedia.org/wiki/DNS_zone_transfer
Second case when TCP is needed , is when data size is greater than 512B (for example during DNSSEC , when we are taking care about security , data size is larger so in that case we have to use TCP)
https://technet.microsoft.com/en-us/library/jj200221(v=ws.11).aspx
https://support.microsoft.com/en-in/help/556000
https://www.networkworld.com/article/2231682/cisco-subnet/cisco-subnet-allow-both-tcp-and-udp-port-53-to-your-dns-servers.html
https://tools.ietf.org/html/rfc7766
So basically DNS uses UDP , but in few cases it prefer to use TCP with compromise at speed of response...
I didn't know much , but Zone transfers are disallowed these days...so you see mostly DNS uses UDP...