It is pretty simple. You should use [async]for scripts that can be executed in any order, and [defer]for scripts that should be executed after parsing HTML.
, script, , script - script, [async], [defer], jQuery, [async], , , jQuery .
jQuery, [async] . [defer], , DOM. , , , , , .
$(document).ready();, [defer] , (, ).